class ClientesController < ApplicationController
  # GET /clientes
  # GET /clientes.json
  def index
    @clientes = Cliente.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render :json=> @clientes }
    end
  end

  # GET /clientes/1
  # GET /clientes/1.json
  def show
    @cliente = Cliente.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render :json=> @cliente }
    end
  end

  # GET /clientes/new
  # GET /clientes/new.json
  def new
    @cliente = Cliente.new

    respond_to do |format|
      format.html # new.html.erb
      #format.json { render :json=> @cliente }
    end
  end

  # GET /clientes/1/edit
  def edit
    @cliente = Cliente.find(params[:id])
   
  end

  # POST /clientes
  # POST /clientes.json
  def create
    @cliente = Cliente.new(params[:cliente])

    respond_to do |format|
      if @cliente.save
        format.html { redirect_to clientes_path, :notice=> 'Cliente was successfully created.' }
        #format.json { render :json: @cliente, status: :created, location: @cliente }
      else
        format.html { render :action=> "new" }
        #format.json { render json: @cliente.errors, status: :unprocessable_entity }
      end
    end
  end

  # PUT /clientes/1
  # PUT /clientes/1.json
  def update
    @cliente = Cliente.find(params[:id])

    respond_to do |format|
      if @cliente.update_attributes(params[:cliente])
        format.html { redirect_to @cliente, :notice=> 'Cliente was successfully updated.' }
        #format.json { head :no_content }
      else
        format.html { render :action=> "edit" }
        #format.json { render json: @cliente.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /clientes/1
  # DELETE /clientes/1.json
  def destroy
    @cliente = Cliente.find(params[:id])
    @cliente.destroy

    respond_to do |format|
      format.html { redirect_to clientes_url }
      #format.json { head :no_content }
    end
  end
  
  def asignar_transportistas
    @cliente = Cliente.find(params[:idCliente])
    @transportistas = Transportista.all
  end
  
  def agregar_transportistas
    @cliente = Cliente.find(params[:idCliente])
    
   
    respond_to do |format|
        if asignar_transportistas_cliente
          format.html { redirect_to clientes_path, :notice=> 'Transportistas asignados correctamente' }
          #format.json { render :json: @cliente, status: :created, location: @cliente }
        else
          format.html { render :action=> "asignar_transportistas" }
          #format.json { render json: @cliente.errors, status: :unprocessable_entity }
        end
    end
    
  end
  
  def asignar_proveedores
    @cliente = Cliente.find(params[:idCliente])
    @proveedores = Proveedor.all
  end
  
  def agregar_proveedores
    @cliente = Cliente.find(params[:idCliente])
    
   
    respond_to do |format|
        if asignar_proveedores_cliente
          format.html { redirect_to clientes_path, :notice=> 'Proveedores asignados correctamente' }
          #format.json { render :json: @cliente, status: :created, location: @cliente }
        else
          format.html { render :action=> "asignar_proveedores" }
          #format.json { render json: @cliente.errors, status: :unprocessable_entity }
        end
    end
    
  end
  
  def asignar_items
    @cliente = Cliente.find(params[:idCliente])
    @items = Item.all
  end
  
  def agregar_items
    @cliente = Cliente.find(params[:idCliente])
    
   
    respond_to do |format|
        if asignar_items_cliente
          format.html { redirect_to clientes_path, :notice=> 'Items asignados correctamente' }
          #format.json { render :json: @cliente, status: :created, location: @cliente }
        else
          format.html { render :action=> "asignar_items" }
          #format.json { render json: @cliente.errors, status: :unprocessable_entity }
        end
    end
    
  end
  
private

  def asignar_transportistas_cliente
    if @cliente.transportistas_cliente.destroy_all
      ids_transportistas = params[:cliente]
      unless ids_transportistas.empty?
        ids_transportistas.each do |id_transportista|
          transportista  = @cliente.transportistas_cliente.build
          transportista.transportista_id = id_transportista[:transportista]
          unless transportista.save
            @cliente.transportistas_cliente.destroy_all
            return false
          end
        end
      end
    end
  end
  
  def asignar_proveedores_cliente
    if @cliente.proveedores_cliente.destroy_all
      ids_proveedores = params[:cliente]
      unless ids_proveedores.empty?
        ids_proveedores.each do |id_proveedor|
          proveedor  = @cliente.proveedores_cliente.build
          proveedor.proveedor_id = id_proveedor[:proveedor]
          unless proveedor.save
            @cliente.proveedores_cliente.destroy_all
            return false
          end
        end
      end
    end
  end
  
    
  def asignar_items_cliente
    if @cliente.items_cliente.destroy_all
      ids_items = params[:cliente]
      unless ids_items.empty?
        ids_items.each do |id_item|
          item  = @cliente.items_cliente.build
          item.item_id = id_item[:item]
          unless item.save
            @cliente.items_cliente.destroy_all
            return false
          end
        end
      end
    end
  end
  
  
end
